<?php
	$urlCurso			=	constant('PARAMETRO_1');
	$cursoVisualizado	=	new Curso(null, $urlCurso);
	$usuario = $this->getUsuario();
	$idUsuario	=	$usuario == null ? null : $usuario->getIdUsuario();
	$idCurso = $cursoVisualizado->getIdCurso();

	
	if ($idUsuario != NULL && defined('PARAMETRO_2') && constant('PARAMETRO_2') == 'atividades') { //ve se a url ta certa (o inicio dela)

		//AQUI verifica privilegios que o cara tem no geral(dependende de quem ele é)
	
		//TODO_done Filtrar privilegios por: visualização atual!!! (considerando em qual curso estou) - Ver: CORR_5
		//TODO_done ver se o usuário é desse curso mesmo, se nao mandar para 404.
		
		$participacao = getParticipacaoCurso($usuario, $cursoVisualizado);
		
		//echo $participacao;
		
		if($participacao == "Professor" || $participacao == "Administrador"){
			$podeVerOutras = true; // se ele pode ver outras atv's feitas (e/ou corrigir) ## podeCorrigir -> podeVerOutras ##
			$podeCorrigir = 'todas';
				
			$exibirColunaStatus = false; // se ele é aluno (status = fazendo / concluido / nem começei colega)
			$exibirColunaNota = true;
			
			$podeAlterar = 'todas';
			
		}elseif($participacao == "Aluno"){
			$podeVerOutras = true;
			$podeCorrigir = 'proprias';
			
			$exibirColunaStatus = true; //obs: nesse caso as atividades editavel e corrigivel nao terao status!!
			$exibirColunaNota = true;
			
			$podeAlterar = 'proprias';
			
		}elseif($participacao == "Tutor" || $participacao == "Monitor"){
			$podeVerOutras = true; // se ele pode ver outras atv's feitas (e/ou corrigir) ## podeCorrigir -> podeVerOutras ##
			$podeCorrigir = 'todas';
				
			$exibirColunaStatus = false; // se ele é aluno (status = fazendo / concluido / nem começei colega)
			$exibirColunaNota = true;
			
			$podeAlterar = 'todas';
			
		}elseif($participacao == "Visitante"){
			adicionaMensagem(texto('MENSAGEM_NAO_TEM_PERMISSAO'), 'erro');
			redireciona(array('404'));
			
		}else{
			redireciona(array('404'));
		}
		
		/*/ -- Para testes
		$podeVerOutras = false; // se ele pode ver outras atv's feitas (e/ou corrigir) ## podeCorrigir -> podeVerOutras ##
		$podeCorrigir = false;
			
		$exibirColunaStatus = false; // se ele é aluno (status = fazendo / concluido / nem começei colega)
		$exibirColunaNota = true;
		
		$podeAlterar = false;
		//*/
		
		if($podeAlterar){
			$podeInserir = true;
			$podeAssociar = true;
			$podeExcluir = true;
			$podeEditar = true;	
		} else {
			$podeInserir = false;
			$podeAssociar = false;
			$podeExcluir = false;
			$podeEditar = false;	
		}
				
		//------------------ END PERMISSOES
		
		//TRATA POSTS (de qualquer lugar dentro de atividades)
		if ($_POST) {
			if(isset($_POST['btnAssociarAtiv'])){
				$_SESSION['constructore']['atividades']['associar'] = $_POST;
				redireciona(array('curso', $urlCurso, 'atividades', 'associar'));
			}
			
			if(isset($_POST['btnExcluirAtiv'])){
				$erro = FALSE;
				$arrayAtividade = array();
				foreach($_POST as $chave => $post) {
					if (preg_match('/^checkAtividade[0-9]+$/', $chave)) {
						array_push($arrayAtividade, str_replace('checkAtividade', '', $chave));
					}
				}
				foreach($arrayAtividade as $id) {
					$atividadeExcluida = new Atividade($id,$idUsuario);
					if(!($atividadeExcluida->apagar())){
						$erro = TRUE;		
					}
				}
				if(!$erro){
					adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
				}else{
					adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
				}
			}
			
		/*	if(isset($_POST['btnAssociarAtiv'])){
				$erro = FALSE;
				$arrayAtividade = array();
				foreach($_POST as $chave => $post) {
					if (preg_match('/^checkAtividade[0-9]+$/', $chave)) {
						array_push($arrayAtividade, str_replace('checkAtividade', '', $chave));
					}
				}
				foreach($arrayAtividade as $id) {
					$atividadeExcluida = new Atividade($id,null,$idUsuario);
					if(!($atividadeExcluida->apagar())){
						$erro = TRUE;		
					}
				}
				if(!$erro){
					adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
				}else
					adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
			}
			*/
		/*/
			if (isset($_POST['BOTAO_XXXX'])) { //trata o post que veio do BOTAO_XXXX
				extract($_POST);

			}
		//*/


		//redireciona($_SESSION['constructore']['URLOrigem']); //depois de tratar o post o padrão é voltar pra onde ele tava antes.
						
		} //END TRATA POSTS.
	
		// A PARTIR DAQUI EU VEJO O CONTEXTO EM QUE O CAMARADA ESTÁ E DESENHO A INTERFACE CONFORME A URL.
		// (aqui entra minha malandragem: vou a partir daqui dar requires pra cada parte diferente do 'atividades')
		
		//Da forma como eu fiz o php de cada parte tratará apenas de: permissoes eventuais posts e particularidades
		//Para exibir(smarty) as variáveis nas partes que tratam de apenas uma instancia do objeto é só usar o vetor:
			//{$objeto.$nomeVariavel} -onde 'nomeVariavel' equivale ao nome que está na classe equivalente.
		if(!defined('PARAMETRO_3')){
			//GOTO LISTAR		
			require('./controle/curso/atividades/listar.php');
			
		}elseif(constant('PARAMETRO_3') == 'inserir'){ // "...atividades/INSERIR"
			//GOTO INSERIR
			require('./controle/curso/atividades/inserir.php');
			
		}elseif(constant('PARAMETRO_3') == 'associar'){ // "...atividades/ASSOCIAR"
			//GOTO ASSOCIAR
			require('./controle/curso/atividades/associar.php');
			
		}else{
			//carrega a atividade e faz testes
			$atividade = NEW Atividade(constant('PARAMETRO_3'), $idUsuario); //poderia ser por nome caso eu quisesse nomes na url
			if(!$atividade || $atividade->idCurso != $idCurso){ //testar se existe a atividade com esse id e se é desse curso
				if(isset($_SESSION['constructore']['atividades'])){
					unset($_SESSION['constructore']['atividades']);	
				}
				redireciona(array('404'));
			}
						
			if(is_numeric(constant('PARAMETRO_3')) && !defined('PARAMETRO_4')){ // "...atividades/idAtividade"
				// Se a atividade estiver encerrada nem o aluno nem o professor podem entrar aqui
				if($atividade->periodo == texto('DADOS_ENCERRADA')){
					if(isset($_SESSION['constructore']['atividades'])){
						unset($_SESSION['constructore']['atividades']);	
					}
					redireciona(array('404'));
				}
				//se o cara não puder editar e a atividade ainda nao estiver aberta:
				elseif($atividade->periodo == 'fechada' && !$podeAlterar && $participacao != "Professor"){
					if(isset($_SESSION['constructore']['atividades'])){
						unset($_SESSION['constructore']['atividades']);	
					}
					redireciona(array('404'));
				}
				
				//estou visualizando(aluno q não criou essa atividade) ou editando(professor/aluno q criou a atividade)
				//isso especificamente vai ser realizado dentro de cada php

				//Nesse redirecionamento deve estar incluido o Editar e o Inserir passo 2!!!! -------------------------------

				elseif($atividade->tipoAtividade == 'questionario')
					require('./controle/curso/atividades/responderEditar_questionario.php');
				elseif($atividade->tipoAtividade == 'teste')
					require('./controle/curso/atividades/responderEditar_teste.php');
				elseif($atividade->tipoAtividade == 'envio')
					require('./controle/curso/atividades/responderEditar_envio.php');
				elseif($atividade->tipoAtividade == 'envioMultiplo'){
					$envioMultiplo = true;
					require('./controle/curso/atividades/responderEditar_envio.php');					
				}
				elseif($atividade->tipoAtividade == 'orientacao')
					require('./controle/curso/atividades/responderEditar_orientacao.php');
				elseif($atividade->tipoAtividade == 'wiki')
					require('./controle/curso/atividades/wiki.php');

					
			}elseif(constant('PARAMETRO_4') == 'editar'){ // "...atividades/idAtiv/EDITAR"
				//GOTO EDITAR (passo1)
				require('./controle/curso/atividades/editar.php');
				
			}elseif(constant('PARAMETRO_4') == 'alunos') { // "...atividades/idAtiv/alunos"
				//GOTO CORRIGIR - LISTAR ALUNOS
				require('./controle/curso/atividades/listarAlunos.php');
				
			}elseif(constant('PARAMETRO_4') == 'aluno'){ //AQUI VAI PARA CORRECAO DE FATO
				if(!defined('PARAMETRO_5') || !is_numeric(constant('PARAMETRO_5')) || !$podeCorrigir){
					if(isset($_SESSION['constructore']['atividades'])) unset($_SESSION['constructore']['atividades']);	
					redireciona(array('404'));
				}else{
					//TODO testar se o usuário de id passado pela url existe
					//quando for instanciar a resposta dele para a atividade testar se ela existe mesmo,
					//senao jogar para 404!
					if(false){}
					elseif($atividade->tipoAtividade == 'questionario')
						require('./controle/curso/atividades/corrigir_quest.php');
					elseif($atividade->tipoAtividade == 'teste')
						require('./controle/curso/atividades/corrigir_teste.php');
					elseif($atividade->tipoAtividade == 'envio')
						require('./controle/curso/atividades/corrigir_envio.php');
					elseif($atividade->tipoAtividade == 'envioMultiplo'){
						$envioMultiplo = true;
						require('./controle/curso/atividades/corrigir_envio.php');
					}
					elseif($atividade->tipoAtividade == 'orientacao')
						require('./controle/curso/atividades/corrigir_orientacao.php');
					elseif($atividade->tipoAtividade == 'wiki')
						require('./controle/curso/atividades/corrigir_wiki.php');
				}
				
			}else{
				if(isset($_SESSION['constructore']['atividades'])){
					unset($_SESSION['constructore']['atividades']);	
				}
				redireciona(array('404'));
			}
		}
	} else { //caso o inicio da url esteja errado
		if(isset($_SESSION['constructore']['atividades'])){
			unset($_SESSION['constructore']['atividades']);	
		}
		redireciona(array('404'));
	}
?>